home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -screenplay- / shareware / solitarexx / scripts / parade.srx < prev    next >
Text File  |  2000-02-29  |  2KB  |  103 lines

  1. /*************************\
  2. ** Parade for Solitarexx **
  3. ** by Michal Szafranski  **
  4. \*************************/
  5. OPTIONS RESULTS
  6.  
  7. tex = '"Parade for Solitarexx"'
  8. win = '"We Have a Winner"'
  9. seq.0 = '1 4 7 10 .'
  10. seq.1 = '2 5 8 11 .'
  11. seq.2 = '3 6 9 12 .'
  12. ADDBUTTON 0 10 "Start"
  13. ADDTEXT 4 42 tex 6
  14. ADDSPACE 6 9
  15. ADDBUTTON 12 10 "Abort"
  16. ADDTEXT 14 42 tex 6
  17. SELECTGUI 1
  18.  
  19. SCREENSIZE 4 10 9 0
  20. DO i = 0 TO 3
  21.     DO j = 0 TO 7
  22.         NEWSTACK i 8 0 j i 0 i 1+(i=3)*6
  23.         stack.i.j = RESULT
  24.     END
  25. END
  26. NEWSTACK 5 8 1 8 1
  27. waste = RESULT
  28. NEWSTACK 6 8 1 8 0
  29. deck = RESULT
  30. ADDCARDS deck
  31. ADDCARDS deck SHUFFLED
  32.  
  33. DO FOREVER
  34.     ACTION
  35.     PARSE VAR RESULT act rest
  36.     IF act = 1 THEN EXIT
  37.     IF act = 3 THEN CALL GAME
  38. END
  39.  
  40. GAME:
  41.     CLEANUP deck
  42.     SETGADGET 14 STR tex
  43.     SELECTGUI 4
  44.     sel = 0
  45.     fin = 0
  46.     b. = 0
  47.     DO i=0 TO 2
  48.         DO j = 0 TO 7
  49.             CARDSELECT deck 1
  50.             PARSE VAR RESULT . v .
  51.             IF v = 0 THEN MOVECARDS deck waste REVERSE
  52.             ELSE MOVECARDS deck stack.i.j REVERSE
  53.             IF v = i+1 THEN DO
  54.                 stack = stack.i.j
  55.                 b.stack = 1
  56.             END
  57.         END
  58.     END
  59.     DO FOREVER
  60.         ACTION
  61.         PARSE VAR RESULT act stack sid card
  62.         SELECT
  63.         WHEN act = 1 THEN EXIT
  64.         WHEN act = 2 & sid = 6 THEN CALL DODECK
  65.         WHEN act = 2 & sel = 0 & card>0 & sid<4 & ~b.stack THEN sel = stack
  66.         WHEN act = 2 & sel > 0 & sid<3 THEN CALL DOSTACKS
  67.         WHEN act = 3 THEN DO
  68.             SELECTGUI 1
  69.             RETURN
  70.         END
  71.         OTHERWISE DO
  72.             sel = 0
  73.             ERRBEEP
  74.         END
  75.         END
  76.     END
  77. RETURN
  78. DODECK:
  79.     DO j = 0 TO 7
  80.         CARDSELECT deck 1
  81.         PARSE VAR RESULT . v .
  82.         IF v = 0 THEN MOVECARDS deck waste REVERSE
  83.         ELSE MOVECARDS deck stack.3.j REVERSE
  84.     END
  85. RETURN
  86. DOSTACKS:
  87.     CARDSELECT sel 0 RELATIVE
  88.     PARSE VAR RESULT kolors wars xx
  89.     CARDSELECT stack 1
  90.     PARSE VAR RESULT kolor war xx
  91.     IF kolor = '' & wars = sid+1 THEN DO
  92.         MOVECARDS sel stack
  93.         b.stack = 1
  94.     END
  95.     ELSE IF FIND(seq.sid,war wars)>0 & kolor = kolors & b.stack THEN DO
  96.         MOVECARDS sel stack
  97.         fin = fin +1
  98.         IF fin = 72 THEN SETGADGET 14 STR win
  99.     END
  100.     ELSE ERRBEEP
  101.     sel = 0
  102. RETURN
  103.